<div class="panel panel-default" ng-controller="wps_Controller"><div class="panel-heading"><h4 class="panel-title pull-left">{{title}}</h4><span class="pull-right">{{version}}</span><div class="clearfix"></div></div></div>

<div class="row" ng-controller="wps_ControlsController">
    <div class="col-md-4">
        <div class="panel panel-default">
            <div class="panel-heading">
				          <h3 class="panel-title">
                    Controls
                  </h3>
            </div>
			<div class="panel-body">
				<table style="width:100%">
					<tr>
						<td style="padding-bottom: .5em;" class="text-muted">Dependencies</td>
            <td ng-hide="$root.status.installed" style="text-align:right;padding-bottom: .5em;"><button type="button" style="width: 90px;" class="btn btn-{{installLabel}} btn-xs" data-toggle="modal" data-target="#dependenciesInstallModal" ng-disabled="processing">{{install}}</button></td>
            <td ng-show="$root.status.installed" style="text-align:right;padding-bottom: .5em;"><button type="button" style="width: 90px;" class="btn btn-{{installLabel}} btn-xs" data-toggle="modal" data-target="#dependenciesRemoveModal" ng-disabled="processing">{{install}}</button></td>
					</tr>
          <tr ng-show="$root.status.installed">
            <td style="padding-bottom: .5em;" class="text-muted">wps</td>
            <td style="text-align:right;padding-bottom: .5em;"><button type="button" style="width: 90px;" class="btn btn-{{statusLabel}} btn-xs" ng-disabled="starting || $root.command == '' && status != 'Stop'" ng-click="togglewps()">{{status}}</button></td>
          </tr>
				</table>
			</div>

      <div class="modal fade" id="dependenciesInstallModal" tabindex="-1" role="dialog" aria-labelledby="dependenciesModalLabel">
        <div class="modal-dialog" role="document">
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
              <h4 class="modal-title" id="dependenciesInstallModalLabel">Install dependencies</h4>
            </div>
            <div class="modal-body">
              All required dependencies have to be installed first. This may take a few minutes.<br /><br />
              Please wait, do not leave or refresh this page. Once the install is complete, this page will refresh automatically.
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-info" ng-click="handleDependencies('internal')" data-dismiss="modal">Internal</button>
              <button type="button" class="btn btn-info" ng-hide="device == 'tetra' || sdAvailable == false" ng-click="handleDependencies('sd')" data-dismiss="modal">SD Card</button>
            </div>
          </div>
        </div>
      </div>

      <div class="modal fade" id="dependenciesRemoveModal" tabindex="-1" role="dialog" aria-labelledby="dependenciesModalLabel">
        <div class="modal-dialog" role="document">
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
              <h4 class="modal-title" id="dependenciesRemoveModalLabel">Remove dependencies</h4>
            </div>
            <div class="modal-body">
              All required dependencies will be removed. This may take a few minutes.<br /><br />
              Please wait, do not leave or refresh this page. Once the remove is complete, this page will refresh automatically.
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
              <button type="button" class="btn btn-info" ng-click="handleDependencies()" data-dismiss="modal">Confirm</button>
            </div>
          </div>
        </div>
      </div>

        </div>
    </div>

    <div class="col-md-8">
      <div class="panel panel-default" ng-show="$root.status.installed && processes.length">
        <div class="panel-heading">
              <h4 class="panel-title">Running Process</h4>
        </div>
        <div style="padding-bottom: 0px;" class="panel-body">
          <table style="margin-bottom: 0px;" class="table">
              <thead>
                <tr>
                  <th>Process</th>
                  <th>SSID</th>
                  <th>MAC</th>
                  <th>Channel</th>
              </thead>
              <tbody>
                <tr ng-repeat="proc in processes">
                  <td>{{ proc.name }}</td>
                  <td>{{ proc.ssid }}</td>
                  <td>{{ proc.mac }}</td>
                  <td>{{ proc.channel }}</td>
                </tr>
              </tbody>
          </table>
        </div>
      </div>
    </div>

</div>

<div class="panel panel-default" ng-show="$root.status.installed" ng-controller="wps_OptionsController">
    <div class="panel-heading pointer" data-toggle="collapse" data-target="#Options">
        <h4 class="panel-title">Options</h4>
    </div>
    <div id="Options" class="panel-collapse collapse">
	    <div class="panel-body">

          <div class="form-group">
              <div class="input-group">
                  <span class="input-group-addon input-sm">Command</span>
                  <input type="text" class="form-control input-sm" ng-model="command" placeholder="wps command">
              </div>
          </div>

          <div class="form-group">
              <div class="input-group">
                <span class="input-group-addon input-sm">Program</span>
                <select ng-change="update()" ng-model="program" class="form-control input-sm">
                  <option value="reaver">reaver</option>
                  <option value="bully">bully</option>
                </select>
              </div>
          </div>

          <div ng-show="program!='--'" class="form-group">
            <div class="input-group">
              <span class="input-group-addon input-sm">Monitor</span>
              <select ng-change="update()" class="form-control input-sm" ng-disabled="monitors.length == 0" ng-model="selectedMonitor">
                  <option ng-repeat="monitor in monitors">{{ monitor }}</option>
              </select>
            </div>
          </div>

          <div ng-show="program!='--'" class="form-group">
              <div class="input-group">
                  <span class="input-group-addon input-sm">BSSID</span>
                  <input ng-change="update()" type="text" class="form-control input-sm" ng-model="bssid" placeholder="BSSID">
              </div>
          </div>

          <div ng-show="program!='--'" class="form-group">
              <div class="input-group">
                  <span class="input-group-addon input-sm">ESSID</span>
                  <input ng-change="update()" type="text" class="form-control input-sm" ng-model="essid" placeholder="ESSID">
              </div>
          </div>

          <div ng-show="program!='--'" class="form-group">
              <div class="input-group">
                  <span class="input-group-addon input-sm">Channel</span>
                  <input ng-change="update()" type="text" class="form-control input-sm" ng-model="channel" placeholder="Channel">
              </div>
          </div>

          <div ng-show="program=='reaver'" class="panel panel-default">
              <div class="panel-heading pointer" data-toggle="collapse" data-target="#reaverOptions">Options</div>
              <div id="reaverOptions" class="panel-collapse collapse">
                <div class="panel-body">

                  <div class="form-group">
                      <div class="input-group">
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option1" ng-true-value="'-a'"> Auto detect the best advanced options for the target AP</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option2" ng-true-value="'-A'"> Do not associate with the AP (association must be done by another application)</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option3" ng-true-value="'-N'"> Do not send NACK messages when out of order packets are received</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option4" ng-true-value="'-S'"> Use small DH keys to improve crack speed</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option5" ng-true-value="'-L'"> Ignore locked state reported by the target AP</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option6" ng-true-value="'-E'"> Terminate each WPS session with an EAP FAIL packet</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option7" ng-true-value="'-n'"> Target AP always sends a NACK [Auto]</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option8" ng-true-value="'-w'"> Mimic a Windows 7 registrar [False]</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option9" ng-true-value="'-X'"> Set exhaustive mode from the beginning of the session [False]</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option10" ng-true-value="'-1'"> Set initial array index for the first half of the pin [False]</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option11" ng-true-value="'-2'"> Set initial array index for the second half of the pin [False]</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option12" ng-true-value="'-P'"> Set into PixieLoop mode (doesn't send M4, and loops through to M3) [False]</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option13" ng-true-value="'-H'"> Enables logging of sequence completed PixieHashes</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option14" ng-true-value="'-Z'"> Do NOT run reaver to auto retrieve WPA password if pixiewps attack is successful</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option15" ng-true-value="'-K 1'"> [1] Run pixiewps with PKE, PKR, E-Hash1, E-Hash2, E-Nonce and Authkey (Ralink, Broadcom & Realtek)</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option16" ng-true-value="'-vv'"> Display non-critical warnings</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option17" ng-true-value="'-vvv'"> Display PixieHashes / enable pixiedust modes</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="reaverOptions.option18" ng-true-value="'-q'"> Only display critical messages</label></div>
                      </div>
                  </div>
                </div>
              </div>
          </div>

          <div ng-show="program=='reaver'" class="panel panel-default">
              <div class="panel-heading pointer" data-toggle="collapse" data-target="#reaverAdvancedOptions">Advanced</div>
              <div id="reaverAdvancedOptions" class="panel-collapse collapse">
                <div class="panel-body">

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option1.check" ng-true-value="'-d'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option1.val" class="form-control input-sm"><span class="input-group-addon input-sm">Set the delay between pin attempts [1]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option2.check" ng-true-value="'-l'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option2.val" class="form-control input-sm"><span class="input-group-addon input-sm">Set the time to wait if the AP locks WPS pin attempts [60]</span>
                      </div>
                    </div>

                    <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option3.check" ng-true-value="'-g'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option3.val" class="form-control input-sm"><span class="input-group-addon input-sm">Quit after num pin attempts</span>
                      </div>
                    </div>

                    <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option4.check" ng-true-value="'-x'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option4.val" class="form-control input-sm"><span class="input-group-addon input-sm">Set the time to sleep after 10 unexpected failures [0]</span>
                      </div>
                    </div>

                    <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option5.check" ng-true-value="'-t'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option5.val" class="form-control input-sm"><span class="input-group-addon input-sm">Set the receive timeout period [5]</span>
                      </div>
                    </div>

                    <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option6.check" ng-true-value="'-T'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option6.val" class="form-control input-sm"><span class="input-group-addon input-sm">Set the M5/M7 timeout period [0.20]</span>
                      </div>
                    </div>

                    <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option7.check" ng-true-value="'-r'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option7.val" class="form-control input-sm"><span class="input-group-addon input-sm">Sleep for y seconds every x pin attempts</span>
                      </div>
                    </div>

                    <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="reaverAdvancedOptions.option8.check" ng-true-value="'-W'"></span><input type="text" ng-change="update()" ng-model="reaverAdvancedOptions.option8.val" class="form-control"><span class="input-group-addon input-sm">Default Pin Generator by devttys0 team [1] Belkin [2] D-Link</span>
                      </div>
                    </div>

                </div>
              </div>
          </div>

          <div ng-show="program=='bully'" class="panel panel-default">
              <div class="panel-heading pointer" data-toggle="collapse" data-target="#bullyOptions">Options</div>
              <div id="bullyOptions" class="panel-collapse collapse">
                <div class="panel-body">

                  <div class="form-group">
                      <div class="input-group">
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option1" ng-true-value="'-B'"> Bruteforce the WPS pin checksum digit</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option2" ng-true-value="'-F'"> Force continue in spite of warnings</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option3" ng-true-value="'-S'"> Sequential pins (do not randomize)</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option4" ng-true-value="'-T'"> Test mode (do not inject any packets)</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option5" ng-true-value="'-A'"> Disable ACK check for sent packets</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option6" ng-true-value="'-C'"> Skip CRC/FCS validation (performance)</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option7" ng-true-value="'-D'"> Detect WPS lockouts unreported by AP</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option8" ng-true-value="'-E'"> EAP Failure terminate every exchange</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option9" ng-true-value="'-L'"> Ignore WPS locks reported by the AP</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option10" ng-true-value="'-M'"> M5/M7 timeouts treated as WSC_NACK's</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option11" ng-true-value="'-N'"> Packets don't contain the FCS field</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option12" ng-true-value="'-P'"> Use probe request for nonbeaconing AP</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option13" ng-true-value="'-R'"> Assume radiotap headers are present</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option14" ng-true-value="'-W'"> Masquerade as a Windows 7 registrar</label></div>
                        <div class="checkbox"><label><input type="checkbox" ng-change="update()" ng-model="bullyOptions.option15" ng-true-value="'-Z'"> Suppress packet throttling algorithm</label></div>
                      </div>
                  </div>
                </div>
              </div>
          </div>

          <div ng-show="program=='bully'" class="panel panel-default">
              <div class="panel-heading pointer" data-toggle="collapse" data-target="#bullyAdvancedOptions">Advanced</div>
              <div id="bullyAdvancedOptions" class="panel-collapse collapse">
                <div class="panel-body">

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option1.check" ng-true-value="'-i'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option1.val" class="form-control input-sm"><span class="input-group-addon input-sm">Starting pin index (7 or 8 digits) [Auto]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option2.check" ng-true-value="'-l'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option2.val" class="form-control input-sm"><span class="input-group-addon input-sm">Seconds to wait if the AP locks WPS [43]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option3.check" ng-true-value="'-p'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option3.val" class="form-control input-sm"><span class="input-group-addon input-sm">Starting pin number (7 or 8 digits) [Auto]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option4.check" ng-true-value="'-v'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option4.val" class="form-control input-sm"><span class="input-group-addon input-sm">Verbosity level 1-3, 1 is quietest [3]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option5.check" ng-true-value="'-r'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option5.val" class="form-control input-sm"><span class="input-group-addon input-sm">Resend packets N times when not acked [2]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option6.check" ng-true-value="'-1'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option6.val" class="form-control input-sm"><span class="input-group-addon input-sm">Delay M seconds every Nth nack at M5 [0,1]</span>
                      </div>
                  </div>

                  <div class="form-group">
                      <div class="input-group">
                        <span class="input-group-addon input-sm"><input type="checkbox" ng-change="update()" ng-model="bullyAdvancedOptions.option7.check" ng-true-value="'-2'"></span><input type="text" ng-change="update()" ng-model="bullyAdvancedOptions.option7.val" class="form-control input-sm"><span class="input-group-addon input-sm">Delay M seconds every Nth nack at M7 [5,1]</span>
                      </div>
                  </div>

                </div>
              </div>
          </div>

	    </div>
	</div>
</div>

<div ng-controller="wps_ScanController">

<div class="panel panel-default" ng-show="$root.status.installed">
    <div class="panel-heading pointer" data-toggle="collapse" data-target="#Interfaces">
        <h4 class="panel-title">Interfaces</span></h4>
    </div>
    <div id="Interfaces" class="panel-collapse collapse">
        <div class="panel-body">
    <form>
      <div class="form-group">
        <div class="input-group">
          <span class="input-group-addon input-sm">Interface</span>
          <select class="form-control input-sm" ng-disabled="scanning" ng-model="selectedInterface">
              <option ng-repeat="interface in interfaces">{{ interface }}</option>
          </select>
            <span class="input-group-btn">
                <button class="btn btn-{{startMonLabel}} btn-sm" ng-disabled="scanning || startingMon" ng-click="startMonitor()">{{startMon}}</button>
            </span>
        </div>
      </div>
      <div class="form-group">
        <div class="input-group">
          <span class="input-group-addon input-sm">Monitor</span>
          <select class="form-control input-sm" ng-disabled="scanning || monitors.length == 0" ng-model="selectedMonitor">
              <option ng-repeat="monitor in monitors">{{ monitor }}</option>
          </select>
          <span class="input-group-btn">
              <button class="btn btn-{{stopMonLabel}} btn-sm" ng-disabled="scanning || stoppingMon || monitors.length == 0" ng-click="stopMonitor()">{{stopMon}}</button>
          </span>
        </div>
      </div>

    </form>
  </div>
</div>
</div>

<div class="panel panel-default" ng-show="$root.status.installed">
  <div class="panel-heading pointer" data-toggle="collapse" data-target="#APs">
        <h4 class="panel-title">Scan Results <span class="badge">{{accessPoints.length}}</span></h4>
    </div>
    <div id="APs" class="panel-collapse collapse">
    <div class="panel-body">
      <form>
        <div class="form-group form-inline">
            <button class="btn btn-{{scanLabel}} btn-sm" ng-disabled="scanning" ng-click="scanForNetworks()">{{scan}}</button>

            <select class="form-control input-sm" ng-model="scanDuration" ng-disabled="scanning">
              <option value="15">15 Seconds</option>
              <option value="30">30 Seconds</option>
              <option value="60">1 Minute</option>
              <option value="120">2 Minute</option>
              <option value="300">5 Minutes</option>
              <option value="600">10 Minutes</option>
            </select>

            <span ng-show="monitors.length == 0" class="text-danger pull-right" style="padding-top: 5px;">Warning: a monitor interface has to be enabled to display WPS information.</span>
        </div>

        <div class="form-group">
          <div class="input-group">
              <span class="input-group-addon input-sm">Search</span>
              <input type="text" class="form-control input-sm" placeholder="Search in scan results" ng-disabled="(accessPoints.length === 0)" ng-model="search">
              <div class="input-group-btn">
                <button class="btn btn-default btn-sm" ng-disabled="(accessPoints.length === 0)" ng-click="clearFilter()">Clear Filter</button>
              </div>
          </div>
        </div>
      </form>

      <div class="table-responsive">
        <table class="table" ng-hide="(accessPoints.length === 0)">
          <thead>
            <tr>
              <th>
                <a class="pointer" ng-click="sortType = 'ssid'; sortReverse = !sortReverse">SSID
                <span ng-show="sortType == 'ssid' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'ssid' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'mac'; sortReverse = !sortReverse">MAC
                <span ng-show="sortType == 'mac' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'mac' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'encryption'; sortReverse = !sortReverse">Encryption
                <span ng-show="sortType == 'encryption' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'encryption' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'cipher'; sortReverse = !sortReverse">Cipher
                <span ng-show="sortType == 'cipher' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'cipher' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'auth'; sortReverse = !sortReverse">Auth
                <span ng-show="sortType == 'auth' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'auth' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'channel'; sortReverse = !sortReverse">Channel
                <span ng-show="sortType == 'channel' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'channel' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'frequency'; sortReverse = !sortReverse">Frequency
                <span ng-show="sortType == 'frequency' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'frequency' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'signal'; sortReverse = !sortReverse">Signal
                <span ng-show="sortType == 'signal' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'signal' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'quality'; sortReverse = !sortReverse">Quality
                <span ng-show="sortType == 'quality' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'quality' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
              <th>
                <a class="pointer" ng-click="sortType = 'wps'; sortReverse = !sortReverse">WPS
                <span ng-show="sortType == 'wps' && !sortReverse" class="caret pointer"></span>
                <span ng-show="sortType == 'wps' && sortReverse" class="dropup"><span class="caret pointer"></span></span>
                </a>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr ng-repeat="(id, accessPoint) in accessPoints | orderBy:sortType:sortReverse | filter:search" ng-click="target(accessPoint)" class="pointer">
              <td class="autoselect">
                <span class="text-muted" ng-hide="accessPoint.ssid"><i>Hidden</i></span>
                {{ accessPoint.ssid }}
                <hook-button hook="ssid" content="accessPoint.ssid"></hook-button>
              </td>
              <td class="autoselect">
                <button type="button" class="btn btn-default btn-xs" ng-click="getMACInfo(accessPoint.mac)" data-toggle="modal" data-target="#infoModal">{{accessPoint.mac}}</button>
                <hook-button hook="mac" content="accessPoint.mac"></hook-button>
              </td>
              <td>{{ accessPoint.encryption }}</td>
              <td>{{ accessPoint.cipher }}</td>
              <td>{{ accessPoint.auth }}</td>
              <td>{{ accessPoint.channel }}</td>
              <td>{{ accessPoint.frequency }} Ghz</td>
              <td>{{ accessPoint.signal }}</td>
              <td class="{{ accessPoint.qualityLabel }}">{{ accessPoint.quality }}%</td>
              <td class="{{ accessPoint.wpsLabel }}">{{ accessPoint.wps }}</td>
            </tr>
          </tbody>
        </table>
      </div>

      <div class="well" ng-show="(accessPoints.length === 0)">No scan results...</div>

    </div>

    <div class="modal fade" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="infoModal">
      <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="infoModalLabel">{{title}}</h4>
          </div>
          <div class="modal-body">
            <pre class="scrollable-pre log-pre">{{output}}</pre>
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-info" data-dismiss="modal">Close</button>
          </div>
        </div>
      </div>
    </div>

</div>
</div>

</div>

<div class="panel panel-default" ng-show="$root.status.installed" ng-controller="wps_OutputController">
	<div class="panel-heading">
        <h4 class="panel-title pull-left">Output</h4>
		<div class="pull-right">
			Auto-refresh <div class="btn-group">
			<button ng-click="toggleAutoRefresh()" class="btn btn-xs btn-{{refreshLabelON}}">ON</button>
			<button ng-click="toggleAutoRefresh()" class="btn btn-xs btn-{{refreshLabelOFF}}">OFF</button>
			</div>
		</div>
		<div class="clearfix"></div>
    </div>
    <div class="panel-body">
        <button class="btn btn-primary btn-sm pull-right" ng-click="refreshOutput()">Refresh log</button><div class="clearfix"></div>
		<pre class="scrollable-pre log-pre">{{output}}</pre>
    </div>
</div>

<div class="panel panel-default" ng-show="$root.status.installed" ng-controller="wps_HistoryController">
    <div class="panel-heading pointer" data-toggle="collapse" data-target="#History">
        <h4 class="panel-title">History <span class="badge">{{history.length}}</span></h4>
    </div>
    <div id="History" class="panel-collapse collapse">
        <div class="panel-body">
	        <button class="btn btn-primary btn-sm pull-right" ng-click="refreshHistory()">Refresh History</button><div class="clearfix"></div>
			<div class="table-responsive">
	            <table class="table table-striped table-bordered table-hover" ng-hide="(history.length == 0)">
	                <thead>
	                    <tr>
	                        <th>Date</th>
	                        <th>Action</th>
	                    </tr>
	                </thead>
	                <tbody>
	                    <tr ng-repeat="entry in history" ng-if="entry != ''">
	                        <td>{{entry[0]}}</td>
	                        <td>
								<div class="btn-group">
									<button type="button" class="btn btn-fixed-length btn-sm btn-default" data-toggle="modal" data-target="#historyModal" ng-click="viewHistory(entry[1])">View</button>
									<button type="button" class="btn btn-sm btn-default" ng-click="downloadHistory(entry[1])">Download</button>
                  <button type="button" class="btn btn-fixed-length btn-sm btn-danger" ng-click="deleteHistory(entry[1])">Delete</button>
								</div>
							</td>
	                    </tr>
	                </tbody>
	            </table>
	        </div>
			<div class="well" ng-show="(history.length === 0)">No history...</div>
        </div>
    </div>

	<div class="modal fade" id="historyModal" tabindex="-1" role="dialog" aria-labelledby="historyModalLabel">
	  <div class="modal-dialog modal-lg" role="document">
	    <div class="modal-content">
	      <div class="modal-header">
	        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
	        <h4 class="modal-title" id="historyModalLabel">View History - {{historyDate}}</h4>
	      </div>
	      <div class="modal-body">
	      <pre class="scrollable-pre log-pre">{{historyOutput}}</pre>
	      </div>
	      <div class="modal-footer">
	        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
	      </div>
	    </div>
	  </div>
	</div>

</div>
